package com.mjf.scala.chapter04

// 导入类
//import scala.util.control.Breaks

// 导入当前包下对应类中的所有静态成员
import scala.util.control.Breaks._

/**
 * 循环中断
 *
 * 在Scala语言中，没有continue和break关键字
 * 通过if判断模拟continue跳出本次循环功能
 * 通过调用方法模拟break跳出整个循环功能
 */
object Scala04_Break {

  def main(args: Array[String]): Unit = {

    // 使用异常模拟break
/*    try {
      for (i <- 1 to 5) {
        if (i == 3) {
          // 跳出整个循环
          throw new RuntimeException
        }
        println(i)
      }
    } catch {
      case e:Exception =>   // 对异常不做处理
    }

    println("循环体之外的代码")*/


    // 使用Breaks类跳出循环，底层是通过异常来处理的
/*    Breaks.breakable(     // 标记当前循环是可中断的
      for (i <- 1 to 5) {
        if (i == 3) {
          // 跳出整个循环
          Breaks.break()
        }
        println(i)
      }
    )

    println("循环体之外的代码")*/


    // 使用静态导入之后不用 类名.方法名 。直接调用方法
    // 打印99乘法表
    for (i <- 1 to 9) {
      breakable(
        for (j <- 1 to 9) {
          print(i + " * " + j + " = " + i * j + "\t")
          if (i == j) {
            println()
            break
          }
        })
    }

  }

}
